
import { Message } from '@arco-design/web-vue';
import axios, { AxiosError, AxiosRequestConfig, AxiosResponse } from 'axios'

// 封装固定接口地址
const request = axios.create({
	baseURL:'http://localhost:3000/ai/ddd',
	timeout: 10000, //超时时间
  headers: {
    'Content-Type': 'application/json;charset=UTF-8'
  }
})

// 添加拦截器  -- 请求拦截器
request.interceptors.request.use(

	(config: AxiosRequestConfig) => {
		Message.warning('请求拦截器')
		// 在发送请求之前做些什么
		// 可以添加认证token
		const token = localStorage.getItem('access_token');
		if (token && config.headers) {
			config.headers.Authorization = `Bearer ${token}`;
		}
		
		// 添加时间戳防止缓存
		if (config.method === 'get') {
			config.params = {
				...config.params,
				_t: Date.now()
			};
		}
		
		return config;
	},
	(error: AxiosError) => {
		// 对请求错误做些什么
		console.error('请求错误:', error);
		return Promise.reject(error);
	}
);

// 响应拦截器
request.interceptors.response.use(
	
	(response: AxiosResponse) => {
		Message.warning('响应拦截器')
		// 对响应数据做点什么
		const res = response.data;
		
		// 根据实际后端返回的数据结构进行调整
		// 如果后端统一返回格式，可以在这里统一处理
		if (res.code && res.code !== 200) {
			// 根据不同的错误码进行处理
			switch (res.code) {
				case 401:
					// 未授权，跳转到登录页
					console.error('未授权，请重新登录');
					// 可以在这里添加跳转到登录页的逻辑
					break;
				case 403:
					console.error('拒绝访问');
					break;
				case 404:
					console.error('请求地址出错');
					break;
				case 500:
					console.error('服务器内部错误');
					break;
				default:
					console.error('未知错误:', res.message || 'Error');
					break;
			}
			
			return Promise.reject(new Error(res.message || 'Error'));
		} else {
			return res;
		}
	},
	(error: AxiosError) => {
		// 对响应错误做点什么
		console.error('响应错误:', error);
		
		if (error.response) {
			const { status } = error.response;
			
			switch (status) {
				case 401:
					console.error('未授权，请重新登录');
					// 可以在这里添加跳转到登录页的逻辑
					break;
				case 403:
					console.error('拒绝访问');
					break;
				case 404:
					console.error('请求地址出错');
					break;
				case 500:
					console.error('服务器内部错误');
					break;
				default:
					console.error(`错误:${status}`);
					break;
			}
		} else {
			console.error('网络错误');
		}
		
		return Promise.reject(error);
	}
);


export default request


